Monitoring the performance of computing systems is important for maintaining the health and performance of the computing system. Both hardware and software can be monitored. In hardware monitoring, measurements can be tuned for specific hardware, because the hardware itself does not change over time. Thus, hardware measurements can be patterned (automatically averaged over time to created a baseline) and compared to real-time measurements. However, because software is much more unstructured and constantly changing (e.g. continuously varying frequency of subroutine calls), it is generally not possible to derive one measurement that can be patterned.
In conventional software monitoring systems (profilers), sensors are placed throughout the target software to capture large amounts of data in a short time. Conventional software profilers record every code segment (for example, methods and subroutines) in terms of who called it, when it started, and when it ended. Once the data is captured, data mining sweeps are performed on the data to detect data anomalies. However, one drawback to such systems is that because the sensors are typically tracked all the time, they generate so much data that they can only operate for short periods of time. In addition, because target software performance is dependent on the time of day (e.g. target software performance is different during peak hours and off-peak hours), the captured data may not reflect target software performance during other times.
Conventional software monitoring systems also require that the sensors and sensor baselines be established prior to testing. In other words, sensors have to be inserted in specific locations and be configured to test for certain thresholds. The establishment of these sensors is made much more difficult if the computing system couples together two or more software applications not designed to operate together. With such combined systems, predicting and instrumenting the performance of dissimilar software is complex and difficult to predict. Furthermore, in conventional software monitoring system, sensors can be relocated and reconfigured only after human intervention.
Therefore, a need exists for real-time target software monitoring that overcomes the limitations of conventional systems.